package team.se.tms.service;

import org.springframework.web.multipart.MultipartFile;
import team.se.tms.dto.Page;
import team.se.tms.dto.StudentBasicDetail;
import team.se.tms.dto.TeachCourseProjectDetail;
import team.se.tms.po.SelectCourseInfo;
import team.se.tms.po.StudentInfo;

import java.util.List;

public interface StudentInfoService {
    public StudentBasicDetail getStudentBasic(String userId) throws Exception;
    public List<TeachCourseProjectDetail> listTeachCourseProjcet(String studentId,Page page) throws Exception;
    public List<StudentInfo> listGroupStudentInfos(String projectId) throws Exception;

    List<StudentInfo> listStudentInfos(String teachCourseId) throws Exception;

    /**
     * 查询单个学生信息
     * @param selectCourseInfo
     * @return
     * @throws Exception
     * @create on 2018/12/28 by qingx
     */
    StudentInfo getStudentInfo(SelectCourseInfo selectCourseInfo) throws Exception;

    /**
     * 查询学生列表
     * @param page
     * @return
     * @throws Exception
     * @create on 2018/12/29 by qingx
     */
    List<StudentBasicDetail> listAllStudentBasicDetails(Page page) throws Exception;

    /**
     * 录入学生信息
     *
     * @param addType 添加学生类型
     * @param studentInfo 学生信息
     * @return
     * @throws Exception 异常
     * @create on 2018/12/29 by qingx
     */
    String savaStudentInfo(String addType,StudentInfo studentInfo) throws Exception;

    /**
     * 修改学生信息
     *
     * @param studentInfo 学生信息
     * @return 添加成功或失败
     * @throws Exception
     * @create on 2018/12/30 by qingx
     */
    boolean modifyStudentInfo(StudentInfo studentInfo) throws Exception;

    /**
     * 批量上传学生信息
     *
     * @return json字符串
     * @throws Exception 异常
     * @create on 2018/12/30 by qingx
     */
    boolean saveStudentInfos(MultipartFile multipartFile) throws Exception;

    /**
     * 批量修改学生挂科数
     *
     * @return json字符串
     * @throws Exception 异常
     * @create on 2018/12/31 by qingx
     */
    boolean modifyStudentFailNums(MultipartFile multipartFile) throws Exception;


}
